The Design and Implementation of the SELF Compiler, an Optimizing Compilet for Object-Oriented Programming Languages

نویسنده

  • Craig Chambers
چکیده

data types [LZ74, LSAS77, LAB+81, LG86] provide a more expressive mechanism for describing and manipulating data structures. An abstract data type abstracts away from a concrete data type by providing a set of operations (the interface) through which clients are to manipulate objects of the type. The abstract data type is implemented in terms of some lower-level data type (the representation), but this implementation is hidden from clients behind the abstract data type’s abstraction boundary. For example, a canonical abstract data type is the stack data type, supporting create, push, pop, top, and isEmpty operations and represented using an array of stack elements and an integer top-of-stack index. The enforced abstraction boundary provides advantages to both implementors and clients of abstract data types over traditional concrete data types. Implementors are free to change the representation of an abstract data type, and as long as the interface remains the same, clients of the abstract data type remain unaffected. For example, the stack data type could be reimplemented using a linked list in place of an array and an integer, and clients would be unaffected. Thus, abstract data types encapsulate design decisions that may change, especially those about the representation of critical data structures. For clients, abstract data types provide a more natural interface for manipulating data structures than the language primitives used with concrete data structures. The operations on abstract data types can directly reflect the conceptual operations on the data type the programmer has in mind, rather than being translated into series of extraction and indexing operations. In the stack example, clients may use the more natural push and pop operations in place of array indexes and integer increments. These abstract operations also improve the reliability of the system, since adding a stack abstract data type

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Declarative Semantics in Object-Oriented Software Development - A Taxonomy and Survey

One of the modern paradigms to develop an application is object oriented analysis and design. In this paradigm, there are several objects and each object plays some specific roles in applications. In an application, we must distinguish between procedural semantics and declarative semantics for their implementation in a specific programming language. For the procedural semantics, we can write a ...

متن کامل

Compiling Java to SUIF: Incorporating Support for Object-Oriented Languages

A primary objective in the SUIF compiler design has been to develop an infrastructure for research in a variety of compiler topics including optimizations on object-oriented languages. However, the task of optimizing object-oriented languages requires that high-level object constructs be visible in SUIF. Java is a statically-typed, object-oriented and interpreted language that has the same requ...

متن کامل

Applying Object-orientation and Aspect-orientation in Teaching Domain-specific Language Implementation*

In traditional compiler design and programming language courses, the complexity required for a successful implementation of the course project is often a major obstacle for many students. This is especially true for courses focused on the design and implementation of domain-specific languages, where the language evolves constantly. This paper describes an approach that allows students to modula...

متن کامل

An Object-Oriented Approach to C++ Compiler Technology

This paper focuses on the use of object-oriented approaches to syntactical and semantical analysis for complex object-oriented languages like C++. We are interested in these issues both from a design and implementation point of view. We implement a semantic analyzer in an object-oriented manner, using the C++ programming language. We base our approach on design patterns in order to improve the ...

متن کامل

Producing Network Applications Using Object-Oriented Petri Nets

The programming language Java has become and extremely popular language; many people are writing concurrent systems using Java. The design and implementation of concurrent Java programs is significantly more complex than sequential programs and the use formal method is seen as extremely beneficial for the design and implementation of such systems. The Petri net formalism [Petri 1962] can be use...

متن کامل

Synergies Between Object-Oriented Programming Language Design and Implementation Research

By pursuing language design and language implementation research in parallel, interactions between the two research areas can be exploited to make faster, better progress in both. We report on our experiences working on the Cecil language design project and the Vortex optimizing compiler project, highlighting how each project has encouraged and challenged the other.

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1992